I was having a problem deleting rows from a DataSet and calling the Update() method because although the Rows.Count was saying that there was less after a RemoveRow() when it called the Update() HasChanges() was false.
A little bit of reading on the web and I found that you have to use the Delete() function in the Rows[x] object. To find the index of the row you have found (using FindById() etc.) I just set a Sort for the DefaultView and then used the DefaultView.Find() function to return a row index in the table.